package com.hy;

import java.util.Arrays;
import java.util.Random;

/**
 * Created With IntelliJ IDEA.
 * Descriptions:选择排序
 * author: Mr.Du
 * Date: 2022/11/11
 * Time: 9:45
 */
public class SelectSort {
    public static void main(String[] args) {
        SelectSort sSort = new SelectSort();
        int[] nums = new int[10];
        Random r = new Random();
        // 跑五次
        for(int i = 0;i < 5;i++){
            for(int j = 0; j < nums.length;j++){
                nums[j] = r.nextInt(1000);
            }
            System.out.println("原数组: ");
            System.out.println(Arrays.toString(nums));
            sSort.selectSort(nums);
            System.out.println("选择排序后的数组: ");
            System.out.println(Arrays.toString(nums));
        }
    }
    
    /**
     * 选择排序(升序)思想：找到每一趟最小元素位置，和当前位置交换(一趟就可以确定该区间在最小元素的位置)
     * @param nums
     */
    public void selectSort(int[] nums) {
        for(int i = 0;i < nums.length;i++){
            int min = i;
            for(int j = i + 1;j<nums.length;j++){
                if(nums[j] < nums[min]){
                    min = j;
                }
            }
            if(min != i){
                int tmp = nums[i];
                nums[i] = nums[min];
                nums[min] = tmp;
            }
        }
    }
}
